package org.jsola.hr.service;

import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.IEmpSocInfoDAO;
import org.jsola.hr.entity.EmpSocInfoDO;
import org.jsola.hr.query.SocStatisticalQuery;
import org.jsola.hr.vo.EmpSocInfoListVO;
import org.jsola.hr.vo.EmpSocInfoStatisticalExportVO;
import org.jsola.hr.vo.SocAmountVO;

import java.util.List;

/**社保统计页面
 * @author lyh
 *
 *
 */
public interface ISocStatisticalService extends IService<IEmpSocInfoDAO, EmpSocInfoDO>  {


    /**
     * 查询社保统计页面的顶部总计
     * @param socStatisticalQuery 查询参数
     * @param siteId              站点Id
     * @return 社保统计页面顶部总计
     */
    SocAmountVO selectAmount(SocStatisticalQuery socStatisticalQuery, String siteId);

    /**
     * 查询某个时间段的各个月份的社保和公积金统计
     * @param socStatisticalQuery 查询参数
     * @param siteId 站点id
     * @return 各个月份的社保和公积金统计
     */
    List<SocAmountVO> selectMonthStatistical(SocStatisticalQuery socStatisticalQuery, String siteId);

    /**
     * 查询某个时间段的各个用工单位的社保和公积金统计
     * @param socStatisticalQuery 查询参数
     * @param siteId 站点id
     * @return 各个用工单位的社保和公积金统计
     */

    List<SocAmountVO> selectCompanyStatistical(SocStatisticalQuery socStatisticalQuery, String siteId);

    /**
     * 查询某个时间段的各个分公司的社保和公积金统计
     * @param socStatisticalQuery 查询参数
     * @param siteId 站点id
     * @return 各个分公司的社保和公积金统计
     */

    List<SocAmountVO> selectChildCompanyStatistical(SocStatisticalQuery socStatisticalQuery, String siteId);

    /**
     * 查询社保统计页面中部右侧员工参保信息
     * @param socStatisticalQuery 查询参数
     * @param siteId              站点Id
     * @return 员工参保信息
     */
    Page<EmpSocInfoListVO> selectEmpSocInfoStatistical(SocStatisticalQuery socStatisticalQuery, String siteId);

    /**
     * 查询社保统计页面底部参保方案,参保地统计信息
     * @param socStatisticalQuery 查询参数
     * @param siteId              站点Id
     * @return 参保方案,参保地统计信息
     */
    SocAmountVO selectCountAndProportion(SocStatisticalQuery socStatisticalQuery, String siteId);

    /**
     * 查询社保统计页面中部社保的各项详情
     * @param socStatisticalQuery 查询参数
     * @param siteId              站点Id
     * @return 社保的各项详情
     */
    SocAmountVO selectSocProgItem(SocStatisticalQuery socStatisticalQuery, String siteId);

    /**
     * 员工社保导出Excel的数据
     * @param socStatisticalQuery 查询参数
     * @param siteId              站点Id
     * @return Excel数据
     */
    List<EmpSocInfoStatisticalExportVO> empSocInfoStatisticalExport(SocStatisticalQuery socStatisticalQuery, String siteId);
}
